/*
    Asignatura: Procesadores de lenguajes.
    Practica de labotario numero 10.
    Autores:
                Guillermo Garcia Juanes (Alu3889)
                Jose Antonio Hernandez Gonzalez (Alu3809)

    Fichero: AnalexXML.g
    Contenido: Analizador Lexico practica numero 10 ejercicio 6.
*/
lexer grammar AnalexXML;

@header{ package pl.equipo13.p10; }

@rulecath { 
	 catch (RecognitionException ae) {
               System.err.println(ae.getMessage());
           throw ae;
       }
}

@members{ boolean sw = false; }

/*----------------------------------------------------LEXICO----------------------------------------------------*/

/* Reglas */
fragment NUEVA_LINEA: ('\n' | '\r\n');
fragment DIGITO: '0'..'9';
fragment LETRA: ('A'..'Z') | ('a'..'z') | '.';
fragment NUMERO: (DIGITO)+('.'(DIGITO)+)?;
BLANCO: (' '|'\t'|NUEVA_LINEA) {$channel=HIDDEN;};
COMENTARIO: '<!--' (options {greedy=false;}:.)* '-->' {$channel=HIDDEN;};
MENOR: '<' {sw = true;};
MAYOR: {sw}? => '>' {sw = false;};
MENORBARRA: '</' {sw = true;};
IDENT: {sw}? => LETRA+;
IGUAL: {sw}? => '=';
VALOR: {sw}? => '"' LETRA+ '"';
CADENA: {!sw}? => (LETRA | NUMERO | ' ')+;